package com.cskaoyan.javase.oop3._2inner._2static._3basic;

/**
 *
 * 首先还是先明确两点:
 *      1.外围类和静态内部类之间的访问不受访问权限限制.
 *      2.外围类和静态内部类相互独立,创建对象,类加载不会互相影响.
 *
 * 静态内部类的访问特点，主要从以下几个角度研究：
 * 静态内部类内部访问外围类
 *      直接创建外围类对象
 *
 * 外围类访问静态内部类成员
 *      一样,也是直接创建静态内部类对象
 *
 * 外部类访问静态内部类成员
 *      也是一样,也是创建静态内部类对象
 *      但是又有区别,需要访问权限:
 *          1.首先需要外围类权限
 *          2.其次需要静态内部类权限
 *          3.需要静态内部类当中的成员权限
 *      语法:
 *      外围类类名.静态内部类类名 对象名 = new 外围类类名.静态内部类类名();
 *
 * 静态内部类访问外部类成员
 *      可以访问,需要创建对象,受权限限制
 *
 * @since 11:42
 * @author wuguidong@cskaoyan.onaliyun.com
 */
public class Demo {
    public static void main(String[] args) {
        EnclosedClazz.Inner ic = new EnclosedClazz.Inner();
    }
}

class EnclosedClazz {
    int a;
    private int b;
    static int c;

    void test() {
        Inner inner = new Inner();
    }

    static void testStatic() {
        Inner inner = new Inner();
    }

    static class Inner {
        int a;
        private int b;
        static int c;

        void test() {
            EnclosedClazz ec = new EnclosedClazz();
        }

        static void testStatic() {
            EnclosedClazz ec = new EnclosedClazz();
        }
    }
}
